<p>如果一个<code>private</code>字段声明了但没有在程序中使用，它可以被认为是死代码，因此应该被删除。
  这将提高可维护性，因为开发人员不会想知道这个变量用于什么。</p>
<p>注意，这个规则没有考虑反射。</p>
<p>注：Lombok注解中的@Data和@Getter会认为是正在被使用的。</p>
<h2>Noncompliant Code Example</h2>
<pre>
public class MyClass {
  private int foo = 42;

  public int compute(int a) {
    return a * 42;
  }

}
</pre>
<h2>Compliant Solution</h2>
<pre>
public class MyClass {
  @Lombok.Getter
  private int foo = 42;

  private int foo2 = 45;

  public int getFoo2(){
    return this.foo2;
  }

}
</pre>
<h2>Exceptions</h2>
<p>The Java serialization runtime associates with each serializable class a version number, called <code>serialVersionUID</code>, which is used during
deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to
serialization.</p>
<p>A serializable class can declare its own <code>serialVersionUID</code> explicitly by declaring a field named <code>serialVersionUID</code> that
must be static, final, and of type long. By definition those <code>serialVersionUID</code> fields should not be reported by this rule:</p>
<pre>
public class MyClass implements java.io.Serializable {
  private static final long serialVersionUID = 42L;
}
</pre>
<p>Moreover, this rule doesn't raise any issue on annotated fields.</p>

